package com.skt.domain.DTO;

import com.skt.domain.ENUM.AccountStatus;
import com.skt.domain.ENUM.UserRole;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import java.time.LocalDate;
import java.time.LocalDateTime;

@Data
public class UserQueryDTO {
    /**
     * 用户名/手机号/邮箱模糊查询关键词
     */
    private String keyword;
    
    /**
     * 用户角色过滤
     */
    private UserRole role;
    
    /**
     * 用户账户状态过滤
     */
    private AccountStatus accountStatus;
    
    /**
     * 注册时间起始（格式：yyyy-MM-dd）
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate startDate;
    
    /**
     * 注册时间结束（格式：yyyy-MM-dd）
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate endDate;
    
    /**
     * 页码，从1开始
     */
    @Min(value = 1, message = "页码必须大于0")
    private Integer pageNum = 1;
    
    /**
     * 每页数量，范围1-100
     */
    @Min(value = 1, message = "每页数量必须大于0")
    @Max(value = 100, message = "每页数量不能超过100")
    private Integer pageSize = 10;
    
    /**
     * 排序字段（可选：username, createdAt, updatedAt）
     */
    private String sortBy;
    
    /**
     * 排序方向（可选：asc, desc）
     */
    private String sortOrder;
}
